#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=1000;
int n,m;
int ans;
int next_s[4][2]={1,2,2,1,1,-2,2,-1};
bool p[maxn][maxn];
bool dfs(int x,int y){
    if(x==n&&y==m){
        ans++;
        return true;
    }
    bool flag=false;
    for(int i=0;i<4;i++){
        int tx=x+next_s[i][0];
        int ty=y+next_s[i][1];
        if(tx>=1&&tx<=n&&ty<=m){
            if(p[tx][ty]){dfs(tx,ty);flag=true;}
        }
    }
    return p[x][y]=flag;
}

int main()
{
    while(cin>>n>>m&&n&&m){
        memset(p,true,sizeof(p));
        ans=0;
        dfs(1,1);
        cout<<ans<<endl;
    }
    getchar();
    getchar();
    return 0;
}
